package IO;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Scanner;

public class Exercise {
    /*给定一个目录,目录里面包含很多的文件和子目录
      用户输入一个要查询的值,看看当前目录下(以及子目录) 是否有匹配的结果,如果有,就删除
     */
    public static void main(String[] args) {
        //先输入目录
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入要删除的路径: ");
        //这里不适用nextLine()的原因是 : 只有遇到回车才会结束
        String basePath = scanner.next();
        //判断路径是否是一个目录,存在就作为根目录
        File root = new File(basePath);
        if(!root.isDirectory()) return;
        //再让用户输入一个要删出的文件名
        System.out.print("输入一个要删除的文件名: ");
        String nameToDelete = scanner.next();
        //针对指定的路径进行扫描,递归操作
        scanDir(root,nameToDelete);
        //先从根目录出发,看看这个文件里是否有要删出的文件,如果有就删除,没有就跳过下一个
        //如果这个目录包含了一些子目录,在针对子目录递归
    }
    private static void scanDir(File root,String nameToDelete) {
        File[] files = root.listFiles();
        //files为空表示目录里面没有任何文件或者子目录
        if(files == null) return;
        //***注意这里的f是路径下随机的目录或者文件,不是按顺序的***
        for (File f : files) {
            if(f.isDirectory()) {
                //如果是目录,那么就继续递归,直到是文件为止
                scanDir(f,nameToDelete);
            }else {
                //如果是文件,那么就删除
                if(f.getName().equals(nameToDelete)) {
                    Scanner scanner = new Scanner(System.in);
                    System.out.print("是否真的要删除 " + f.getAbsolutePath() +":");
                    String choice = scanner.next();
                    if(choice.equals("yes")) {
                        boolean flg = f.delete();
                        System.out.println("删除成功!!");
                    }else {
                        System.out.println("取消删除!!");
                    }
                }
            }
        }
    }
}
